function animate(el,target,callback){
  // 执行定时器之前先清除一次定时器
  clearInterval(el.timer);
  
  // 创建周期性定时器,实现动画效果
  el.timer = setInterval(function(){
    // 目标值减去当前所在位置除以10,依次累加无限接近0
    var step = (target - el.offsetLeft) / 10;//这里除以10,相当于在最后移动距离小于等于10的时候,取整为1,之后定时器每次运行step都等于1
    // 这句代码相当于把所有sep值取整,如果step在0到1之间时候,就取整为1,如果在0到-1之间取整为-1
    step = step > 0 ? Math.ceil(step) : Math.floor(step);

    if(el.offsetLeft == target) {
      clearInterval(el.timer);
      callback && callback();
      return null;
    }
    // 这里得到step会越来越小
    el.style.left = el.offsetLeft + step + 'px';
  },15); 
}